<?php
/**
 * Gestion de Directorios
 */
class Directorio {
    /**
     * @var String
     */
    private $ruta;
    /**
     * @var Directory
     */
    private $dir;
  
    private $vec;//va a contener la lista ordenada de directorios
    private $indice;

    /**
     * Constructor
     * @param String $ruta Ruta del Directorio
     */
    public function __construct($ruta) {
        //analizo el directorio
        $this->ruta = $ruta;
        $this->dir = opendir($ruta);

        //cargo un arreglo con los resultados
        $i=0;
        while($vec[$i]=readdir($this->dir)) {
            $i++;
        }
        
        //ordeno el arreglo
        rsort($vec);
        $i=0;
        foreach ($vec as $key => $value) {
            
            if ($value != '.' && $value != '..' && $value) {
                $this->vec[$i] = $value;
                $i++;
            }
        }
        $this->indice = 0;
    }

    /**
     * Lee el siguiente Archivo del Directorio
     * @return boolean
     */
    public function lee() {
        //leo el arreglo de directorios

        if(array_key_exists($this->indice, $this->vec)) {
            $this->indice ++;
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * Muestra título del archivo
     * @return type
     */
    public function muestra() {
        return $this->vec[$this->indice-1];
    }

    /**
     * Cierra la conexion con el directorio
     */
    public function cierra() {
        closedir($this->dir);
    }

    /**
     * Obtiene el directorio actual
     * @return String
     */
    public function actual() {
        return $this->ruta;
    }

    /**
     * Obtiene el tamaño del archivo actual
     * @return type
     */
    public function tamanio() {
        $tam = round(filesize($this->ruta.'/'.$this->vec[$this->indice-1]) / 1024,1);
        return $tam.' Kb';
    }

    /**
     * Obtiene la Fecha de Modificación del Archivo actual
     * @param String $format Formato de fecha ej: d-m-Y
     * @return type
     */
    public function fechaModif($format) {
        return date($format,filectime($this->ruta.'/'.$this->vec[$this->indice-1]));
    }
    
    /**
     * Obtiene la Extension del Archivo actual
     * @return type
     */
    public function extension() {
        $ext = pathinfo($this->vec[$this->indice-1]);
        return $ext['extension'];  
    }
    
}
?>
